package leetCode;

import org.junit.Test;

import java.util.Arrays;

/**
 * 给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。
 * <p>
 * 你必须在 原地 旋转图像，这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。
 *
 * @author 司松坡
 * @createTime 2023年03月21日
 */
public class LeetCode48 {
    public void rotate(int[][] matrix) {
        if (matrix == null || matrix[0].length == 1) {
            return;
        }
        for (int i = 0; i < (matrix[0].length >> 1); i++) {
            for (int j = 0; j < ((matrix[0].length + 1) >> 1); j++) {
                int min = matrix[i][j];
                matrix[i][j] = matrix[matrix[0].length - 1 - j][i];
                matrix[matrix[0].length - 1 - j][i] = matrix[matrix[0].length - 1 - i][matrix[0].length - 1 - j];
                matrix[matrix[0].length - 1 - i][matrix[0].length - 1 - j] = matrix[j][matrix[0].length - 1 - i];
                matrix[j][matrix[0].length - 1 - i] = min;
            }
        }
    }

    @Test
    public void test() {
        int[][] matrix = new int[][]
                {{5, 1, 9, 11}, {2, 4, 8, 10}, {13, 3, 6, 7}, {15, 14, 12, 16}};
        rotate(matrix);
        System.out.println(Arrays.deepToString(matrix));
        //[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]


    }


    @Test
    public void test11() {
        int k, i;
        for (k = 0; k < 10; k++) {
            System.out.print("  i = " + k);
        }
        System.out.println(k);
        System.out.println();

        for (i = 0; i < 10; ++i) {
            System.out.print("  j = " + i);
        }
        System.out.println(i);


        int sum = 99;
        while (sum > 1) {
            sum = sum >> 1;
            System.out.println(sum);
        }

    }

}
